'use strict';

/**
 * 文件用途说明 : 聊天室客户端处理
 * 由于是demo，用全局函数定义，简化开发
 *
 * 项目名称 : nodejs-war
 * 作者姓名 : crixusshen
 * 创建日期 : 16/2/14
 * 修改日期 : 16/2/14
 * 版权所有 : 东方证券股份有限公司
 **/

var socket = io.connect();
$(document).ready(function () {
    var chatApp = new Chat(socket);

    // 显示更名操作后的结果
    socket.on('nameResult', function (result) {
        var message;

        if(result.success){
            message = 'You are now known as ' + result.name + '.';
        } else {
            message = result.message;
        }
        $('#messages').append(divSystemContentElement(message));
    });

    // 显示变更房间后的结果
    socket.on('joinResult', function (result) {
        $('#room').text(result.room);
        $('#messages').append(divSystemContentElement('Room changed.'));
    });

    // 显示接受到的消息
    socket.on('message', function (message) {
        var newElement = $('<div></div>').text(message.text);
        $('#messages').append(newElement);
    });

    // 显示可用房间列表
    socket.on('rooms', function (rooms) {
        $('#room-list').empty();

        for(var room in rooms){
            //room = room.substring(1, room.length);
            room = rooms[room];
            if(room != ''){
                $('#room-list').append(divEscapedContentElement(room));
            }
        }

        $('#room-list div').click(function () {
            chatApp.processCommand('/join ' + $(this).text());
            $('#send-message').focus();
        });
    });

    // 定期请求可用房间列表
    setInterval(function () {
        socket.emit('rooms');
    }, 1000);

    $('#send-message').focus();

    $('#send-form').submit(function () {
        processUserInput(chatApp, socket);
        return false;
    });
});

/**
 * 处理非受信消息内容
 * @param message   消息内容
 */
function divEscapedContentElement(message){
    return $('<div></div>').text(message);
}

/**
 * 处理受信消息内容
 * @param message   消息内容
 */
function divSystemContentElement(message){
    return $('<div></div>').html('<i>' + message + '</i>');
}

/**
 * 处理用户原始的输入
 * @param chatApp   Chat封装对象
 * @param socket    当前连接
 */
function processUserInput(chatApp){
    var message = $('#send-message').val();
    var systemMessage;

    // 处理命令
    if(message.charAt(0) == '/'){
        systemMessage = chatApp.processCommand(message);
        if(systemMessage){
            $('#messages').append(divSystemContentElement(systemMessage));
        }
    } else {
        // 将非命令输入广播给其他用户
        chatApp.sendMessage($('#room').text(), message);
        $('#messages').append(divEscapedContentElement(message));
        $('#messages').scrollTop($('#messages').prop('scrollHeight'));
    }

    $('#send-message').val('');
}


